package com.heima.article.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.heima.model.article.dtos.ArticleDto;
import com.heima.model.article.dtos.ArticleHomeDto;
import com.heima.model.article.pojos.ApArticle;
import com.heima.model.common.dtos.ResponseResult;
import com.heima.model.mess.ArticleVisitStreamMess;

import java.util.Map;

public interface ApArticleService extends IService<ApArticle> {

    /**
     * 加载文章列表
     *
     * @param dto
     * @param type 1 更多 2 最新
     * @return
     */
    ResponseResult load(ArticleHomeDto dto, Short type);


    /**
     * 加载文章列表
     *
     * @param dto
     * @param type 1 更多 2 最新
     * @param firstPage true 首页，false 不是首页
     * @return
     */
    ResponseResult load2(ArticleHomeDto dto, Short type, boolean firstPage);

    /**
     * 保存文章
     *
     * @param articleDto
     * @return
     */
    ResponseResult saveArticle(ArticleDto articleDto);

    /**
     * 更新文章的点赞数-接收kafka的消息
     *
     * @param map
     */
    void updateArticleLikesCountToDb(Map map);

    /**
     * 更新文章的点赞数到redis
     *
     * @param map
     * @return
     */
    void updateArticleLikesCountToRedis(Map map);

    /**
     * 更新文章的浏览数
     *
     * @param map
     */
    void updateArticleViewsCountToDb(Map map);

    /**
     * 更新文章的分值  同时更新缓存中的热点文章数据
     * @param mess
     */
    void updateScore(ArticleVisitStreamMess mess);
}
